package cn.jietuo.redis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * @author zhangx & jietuo_zx@163.com
 * @version 1.0
 * @date 2021/3/4
 * @description: jedis客户端的使用
 */
public class JedisSingleTest {

    public static void main(String[] args) {
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(20);
        jedisPoolConfig.setMaxIdle(10);
        jedisPoolConfig.setMinIdle(5);

        /**
         * 配置
         * host
         * 端口号
         * 超时时间  既是连接超时，又是读写超时
         * 密码
         */
        JedisPool jedisPool = new JedisPool(jedisPoolConfig, "119.29.19.217", 6379, 3000, "jietuo");

        Jedis jedis = null;
        try {
            jedis = jedisPool.getResource();

            // String 常用操作
            System.out.println(jedis.set("jietuo", "good"));
            System.out.println(jedis.get("jietuo"));
            // 可以通过lpop,lpush,rpop,rpush来实现堆栈等数据结构
            System.out.println(jedis.lpush("queue", "ooxx"));
            System.out.println(jedis.lpop("queue"));
            // 不存在才回去设置，如果已有设置，则新的设置无效，这个可以用来做分布式锁
            System.out.println(jedis.setnx("jietuo1", "verygood"));
            System.out.println(jedis.setnx("jietuo1", "verygood"));
            // 执行完业务之后，释放锁
            System.out.println(jedis.del("jietuo1"));
            // 原子加减 阅读计数器 或者点赞数量等等
            System.out.println(jedis.incr("article:readcount:1"));
            // 将key中存储的值加上increment的值
            System.out.println(jedis.incrBy("likes:id:1",10));
            // Hash 常用操作
            System.out.println(jedis.hset("person","name","jietuo"));
            System.out.println(jedis.hget("person","name"));

        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}
